﻿// Inner Fire 游戏引擎库
// UI - 文本标签
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 用于UI的组件-文本标签，显示一行文本
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-01-07

#pragma once

#include <ui/component/ui_component.h>
#include <ui/prefab/label_info.h>

namespace ifire::ui {

class Label : public UIComponent {
public:
  Label() = default;
  Label(ikit::sstr name_id, const LabelInfo* info);
  Label(const Label& lhs) = delete;
  Label& operator=(const Label& lhs) = delete;
  ~Label() = default;

  const LabelInfo* Info() const { return info_; }
  inline void SetLabelText(dx::DxText* text) { text_ = text; }
  void SetPosition(XMFLOAT2 position);

  // 格式化设置文字
  size_t Print(const char* format, ...);
  // 格式化设置文字
  size_t VPrint(const char* format, va_list args);
  // 设置文字
  void SetText(const char* text, size_t len = 0);

  // 设置显示
  void SetVisible(bool state) override;
  void SetScale(XMFLOAT2 scale) override;
  void SetRefresh() override;

private:
  const LabelInfo* info_;
  dx::DxText* text_ = nullptr;
};
using LabelPtr = std::unique_ptr<Label>;

} // namespace ifire::ui